﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Kontrolki;
using KPWeb.Class;
using KPWeb.Data;
using KPWeb.Function;



namespace KPWeb.Jednostka
{

    public partial class WnioskiUrlopoweJednostka : KPPage
    {

        private void initOpisyObecnoscWPracy()
        {
            lBrakZastepcy.Visible = false;
            lZastepca.Visible = false;
            lNieobecna.Visible = false;
            lNieobecnaOkres.Visible = false;
            lObecna.Visible = false;
        }

        private void initOsoby(int jednostkaID)
        {
            dOsobyJednostka.Items.Clear();
            dOsobyJednostka.Items.Add(new ListItem() { Text = Stale.wybierzOsobe, Value = Stale.wybierzOsobe });
            Model model = new Model();
            foreach (vKP_OsobyListaObecnosci item in model.GetListaObecnosci(int.Parse(Current.JednostkaID)))
            {
                dOsobyJednostka.Items.Add(new ListItem()
                {
                    Text = FunctionGlobal.UppercaseFirstWords(item.NazwiskoImie),
                    Value = item.OsobaID.ToString()
                });
            }
            dOsobyJednostka.SelectedIndex = 0;
        }
        
        
        private void komunikatError(int kod)//, int iT, int iID)
        {
            fError.Visible = true;
            switch (kod)
            {
                case -2: Error2.Visible = true;
                    break;
                case -3: Error3.Visible = true;
                    break;
                default: fError.Visible = false;
                    break;
            }
        }
     

        public static vKP_DokumentyWnioskiUrlopowe[] GetWnioskiUrlopowe( int osobaID)
        {
            using (DBContainer db = new DBContainer())
            {

                return (from wiz in db.vKP_DokumentyWnioskiUrlopowe.Where(a => a.OsobaID == osobaID).OrderByDescending(a=>a.OdData)
                        select wiz).ToArray();
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            fError.Visible = false;
            Error2.Visible = false;
            Error3.Visible = false;
            initOpisyObecnoscWPracy();
             if (!IsPostBack)
            {
                tData.Text = String.Format("{0:yyyy-MM-dd}", DateTime.Now);
                hJednostkaID.Value = (Model.GetJednostkaGlownaDlaJednostki(int.Parse(Current.JednostkaID))).ToString();
                initOsoby(int.Parse(hJednostkaID.Value));
                dYear.Items.Clear();
                foreach (short item in Kalendarz.GetYearGdzieWpisanoSwieta())
                {
                    this.dYear.Items.Add(item.ToString());
                }
                dYear.SelectedValue = DateTime.Now.Year.ToString();
                //dOsoby.Items.Clear();
                //dOsoby.Items.Add(new ListItem() { Text = "", Value = "0" });
                //Model model = new Model();
                //foreach (vKP_OsobyListaObecnosci item in model.GetListaObecnosci(int.Parse(Current.JednostkaID)))
                //{
                //    dOsoby.Items.Add(
                //        new ListItem() { Text = FunctionGlobal.UppercaseFirstWords(item.NazwiskoImie), Value = item.OsobaID.ToString() });

                //}
            }
        }

       
  protected void btnKasujClick(object sender, EventArgs e)
        {
         
            int outProc =  UrlopyK.DeleteWniosekUrlopowy(
                           int.Parse(((Button)sender).CommandArgument.ToString()));
            if (outProc != 0) Error2.Visible = true;
            this.ListView1.DataBind();
        
        }

  protected void btnDoKadrClick(object sender, EventArgs e)
  {
     
      int outProc = UrlopyK.UpdateWniosekUrlopowy(
                     int.Parse(((Button)sender).CommandArgument.ToString()),1,2);
      if (outProc != 0) Error2.Visible = true;
      this.ListView1.DataBind();
 
  }

  protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
  {
      string sTemp1 = ((Label)e.Item.FindControl("Zastepstwo")).Text;
      string sTemp2 = ((Label)e.Item.FindControl("NazwiskoImie")).Text;
      ((Label)e.Item.FindControl("Zastepstwo")).Text = FunctionGlobal.UppercaseFirstWords(sTemp1);
      ((Label)e.Item.FindControl("NazwiskoImie")).Text = FunctionGlobal.UppercaseFirstWords(sTemp2);
  }


  protected void LinkButton1_Click(object sender, EventArgs e)
  {
      Server.Transfer("~/Zestawienia/ToDo1.aspx");
  }

  protected void lKartaPracy_Click(object sender, EventArgs e)
  {
      Server.Transfer("~/Zestawienia/ToDo1.aspx");
  }
  protected void lInfo_Click(object sender, EventArgs e)
  {

      Osoby osoba1 = new Osoby();
      vKP_Osoby tempOsoba = osoba1.GetDaneOsoby(int.Parse(Current.JednostkaID), int.Parse(dOsobyJednostka.SelectedValue));
      if (tempOsoba == null)
      {
          lNieobecna.Text = "Brak danych osoby w bazie";
          return;
      }
      string nazwisko = HttpUtility.UrlEncode(tempOsoba.Nazwisko.ToString());
      string imie = HttpUtility.UrlEncode(tempOsoba.Imie.ToString());
      System.Diagnostics.Process.Start(
          "http://pracownicy.wum.edu.pl/PeopleSearch/Default.aspx?TabKey=0&TaskItemKey=2&Screen=1&SummaryFilter=(%26(givenName%3d" +
          imie + "*)(sn%3d" + nazwisko + "*))");
  }
  protected void lSzukaj_Click(object sender, EventArgs e)
  {

      if (tData.Text.Trim() == "" )
      {
          komunikatError(-3);
          return;
      }
      
      UrlopyK urlop = new UrlopyK();
      //vKP_DokumentyWnioskiUrlopowe  item= new vKP_DokumentyWnioskiUrlopowe();
      vKP_DokumentyWnioskiUrlopowe item = urlop.GetObecnoscOsobyWnioskiUrlopowe(int.Parse(dOsobyJednostka.SelectedValue), DateTime.Parse(tData.Text));
      lObecna.Visible = (item == null);
      lNieobecna.Visible = (item != null);
      lNieobecnaOkres.Visible = (item != null);
      //lZastepca.Visible = (item.ZastepstwoOsobaID != null);
      //lBrakZastepcy.Visible = (item.ZastepstwoOsobaID == null);
      string nazwisko = FunctionGlobal.UppercaseFirstWords(dOsobyJednostka.SelectedItem.Text);
      if (item == null)
      {
          lObecna.Text = nazwisko+": w dniu "+tData.Text+Stale.brakInfoUrlop;
          lBrakZastepcy.Visible = false;
          lZastepca.Visible = false;
      }
      else
      {
          lNieobecna.Text = nazwisko + ": w dniu " + tData.Text + Stale.jestInfoUrlop;
          lNieobecnaOkres.Text = " Nieobecność: "
              + String.Format("{0:yyyy-MM-dd}", item.OdData) + " do " +
               String.Format("{0:yyyy-MM-dd}", item.DoData);
          lBrakZastepcy.Visible = true;
          if (item.ZastepstwoOsobaID != null)
          {
              lZastepca.Visible = true;
              lBrakZastepcy.Text = "Zastępstwo";
              lZastepca.Text = FunctionGlobal.UppercaseFirstWords(item.Zastepstwo);
          }
          else
          {
              lZastepca.Visible = false;
              lBrakZastepcy.Text = "Brak zastępstwa";
          }
      }


  }

  protected void lZastepca_Click(object sender, EventArgs e)
  {
      //  Server.Transfer("~/Zestawienia/ToDo1.aspx");

      UrlopyK urlop = new UrlopyK();
      vKP_DokumentyWnioskiUrlopowe item = urlop.GetObecnoscOsobyWnioskiUrlopowe(int.Parse(dOsobyJednostka.SelectedValue), DateTime.Now);

      Osoby osoba1 = new Osoby();
      vKP_Osoby tempOsoba = osoba1.GetDaneOsoby(int.Parse(Current.JednostkaID), (int)item.ZastepstwoOsobaID);
      if (tempOsoba == null)
      {
          lNieobecna.Text = "Brak danych osoby w bazie";
          return;
      }
      string nazwisko = HttpUtility.UrlEncode(tempOsoba.Nazwisko.ToString());
      string imie = HttpUtility.UrlEncode(tempOsoba.Imie.ToString());
      System.Diagnostics.Process.Start(
          "http://pracownicy.wum.edu.pl/PeopleSearch/Default.aspx?TabKey=0&TaskItemKey=2&Screen=1&SummaryFilter=(%26(givenName%3d" +
          imie + "*)(sn%3d" + nazwisko + "*))");


  }
  protected void lPlanyUrlopow_Click(object sender, EventArgs e)
  {
      Server.Transfer("~/Urlopy/PlanyUrlopow.aspx?value=0&osobaIDPlany=" + int.Parse(dOsobyJednostka.SelectedValue)
       + "&osobaJednostkaIDPlany=" + int.Parse(Current.JednostkaID));
  }
  protected void dJednostkiAktywne_SelectedIndexChanged(object sender, EventArgs e)
  {
      //  initOpisyObecnoscWPracy();
      initOpisyObecnoscWPracy();
      if ((sender as DropDownList).SelectedIndex != 0)
      {
          this.dOsobyJednostka.Enabled = true;
          initOsoby((sender as DropDownList).SelectedIndex);
      }
      else
      {
          this.dOsobyJednostka.Enabled = false;
          //    this.dOsobyJednostka.SelectedIndex = 0;
      }
  }

  protected void dOsobyJednostka_SelectedIndexChanged(object sender, EventArgs e)
  {
      //  initOpisyObecnoscWPracy();
      initOpisyObecnoscWPracy();
      if ((sender as DropDownList).SelectedIndex != 0)
      {
          this.lSzukaj.Enabled = true;
          lPlanyUrlopow.Enabled = true;
          lInfo.Enabled = true;
          //     initOsoby((sender as DropDownList).SelectedIndex);
      }
      else
      {
          this.lSzukaj.Enabled = false;
          lPlanyUrlopow.Enabled = false;
          lInfo.Enabled = false;
      }
  }

    }
}